//public class test {
//    public static void main(String[] args) {
//       //装箱(自动装箱）
//        Integer AA=10;
//        int a=1;
//        Integer aa=a;
//        System.out.println(aa);
//        //手动装箱
//        Integer A= Integer.valueOf(1);
//        //即基本类型 转变为 包装类型
//
//        //拆箱（自动拆箱）
//        Integer B=10;
//        int b=B;
//        //手动拆箱
//        int bb=B.intValue();
//        double cc=B.intValue();
//    }
//}

import java.sql.SQLOutput;

//经典案例
//public class test{
//    public static void main(String[] args) {
//        Integer A=100;
//        Integer B=100;
//        System.out.println(A==B);
//        Integer C=200;
//        Integer D=200;
//        System.out.println(C==D);
//        //输出结果分别是什么？
//    }
//}

//泛型
//举例：实现一个类，类中包含一个数据成员，使得数组中可以存放任何类型的数据，也可以根据成员方法返回数组中某个下标的值
//class MyArray{
//    Object[] a=new Object[10];
//    public void Setvalue(int pos,Object z){
//        a[pos]=z;//pos下标从0开始
//    }
//
//    public Object Getvalue(int pos){
//        return a[pos];
//    }
//}
//
//public class test{
//    public static void main(String[] args) {
//        MyArray myArray=new MyArray();
//        myArray.Setvalue(0,12);
//        myArray.Setvalue(9,"haha");
//        String str = (String) myArray.Getvalue(9);
//        System.out.println((int)myArray.Getvalue(0));
//        System.out.println((String) myArray.Getvalue(9));
//    }
//}


//明知道类型却要强转太麻烦，能否改进？-------引出泛型
//class MyArray<T>{
//    Object[] a=new Object[10];
//    public void Setvalue(int pos,T z){
//        a[pos]=z;//pos下标从0开始
//    }
//
//    public T Getvalue(int pos){
//        return (T)a[pos];  //把返回类型强转为指定类型
//    }
//}
//
//public class test{
//    public static void main(String[] args) {
//        MyArray<Integer> myArray=new MyArray<>();
//        myArray.Setvalue(0,12);
//        myArray.Setvalue(1,3);
//        System.out.println(myArray.Getvalue(0));
//        System.out.println(myArray.Getvalue(1));//不再需要强转
//        myArray.Setvalue(9,"haha");//能自动识别类型是否正确
//        String str = (String) myArray.Getvalue(9);
//        System.out.println((String) myArray.Getvalue(9));
//        MyArray<String> myArray1=new MyArray<>();
//        myArray1.Setvalue(2,"haha");
//        System.out.println(myArray1.Getvalue(2));
//    }
//}




//重写一遍所学代码
//public class test {
//    public static void main(String[] args) {
//        int a=1;
//        Integer aa=a;
//        Integer aaa=3;
//        Integer aaaa= Integer.valueOf(1);
//
//        Integer B=2;
//        int b=B;
//        b=B.intValue();
//    }
//}

//实现一个类，类中包含一个数据成员，使得数组中可以存放任何类型的数据，也可以根据成员方法返回数组中某个下标的值
class MyArray<T>{
    Object []array=new Object[10];
    public void setValue(int pos,T val){
        array[pos]=val;
    }
    public T getValue(int pos){
        return (T)array[pos];
    }
}

public class test{
    public static void main(String[] args){
        MyArray<Integer> myArray=new MyArray<>();
        myArray.setValue(0,12);
        System.out.println(myArray.getValue(0));
    }
}




































